package Day09;

import java.util.Arrays;

/**
 * -----------------------------------------------------------------------------------------
 * 题目：
 *      由范围 [0,n] 内所有整数组成的 n + 1 个整数的排列序列可以表示为长度为 n 的字符串 s ，其中:
 *      如果perm[i] < perm[i + 1]，那么s[i] == 'I'
 *      如果perm[i] > perm[i + 1]，那么 s[i] == 'D'
 *      给定一个字符串 s ，重构排列perm 并返回它。如果有多个有效排列perm，则返回其中 任何一个 。
 * -----------------------------------------------------------------------------------------
 * 示例：
 *      输入：s = "IDID"
 *      输出：[0,4,1,3,2]
 * -----------------------------------------------------------------------------------------
 * 方法：
 *      遍历数组，双指针赋值
 * -----------------------------------------------------------------------------------------
 */
class Solution {
    public static void main(String[] args) {
        String s = "IDID";
        System.out.println(Arrays.toString(diStringMatch(s)));
    }
    public static int[] diStringMatch(String s) {
        int i=0;
        int j=s.length();
        int[] arr = new int[s.length()+1];
        for(int k=0;k<s.length();++k){
            if(s.charAt(k)=='I'){
                arr[k]=i;
                i++;
            }else{
                arr[k]=j;
                j--;
            }
        }
        arr[s.length()]=i;
        return arr;
    }
}